package uoc.tds.pec3.servidor.implementacion;

import java.io.Serializable;
import java.util.List;

import uoc.tds.pec3.comun.beans.Area;
import uoc.tds.pec3.comun.beans.ComentarioIncidencia;
import uoc.tds.pec3.comun.beans.Incidencia;
import uoc.tds.pec3.comun.beans.Usuario;

import uoc.tds.pec3.comun.excepciones.ExcepcionGestorIncidencias;
import uoc.tds.pec3.comun.excepciones.ExcepcionRemota;

import uoc.tds.pec3.comun.interfaces.GestorIncidenciasInterface;
import uoc.tds.pec3.servidor.bd.GestorArea;
import uoc.tds.pec3.servidor.bd.GestorComentarioIncidencia;
import uoc.tds.pec3.servidor.bd.GestorIncidencia;
import uoc.tds.pec3.servidor.bd.GestorUsuario;

/**
 * Clase que implementa la interfaz GestorIncidenciasInterface
 */
public class GestorIncidenciasImpl implements GestorIncidenciasInterface, Serializable {

	public GestorIncidenciasImpl() throws ExcepcionRemota {
		super();
	}
	
	private static final long serialVersionUID = -4376284077923700095L;

	public Integer numIncidenciasEnCurso() throws ExcepcionRemota, ExcepcionGestorIncidencias {
		GestorIncidencia gestorIncidencia = new GestorIncidencia();
		return gestorIncidencia.numIncidenciasEnCurso();
	}

	public Integer numIncidenciasResueltas() throws ExcepcionRemota, ExcepcionGestorIncidencias {
		GestorIncidencia gestorIncidencia = new GestorIncidencia();
		return gestorIncidencia.numIncidenciasResueltas();
	}

	public boolean altaIncidencia(Integer id_request, Integer id_user, Integer id_area, String descripcion, String esta_resuelta) throws ExcepcionGestorIncidencias{
		GestorIncidencia gestorIncidencia = new GestorIncidencia();
		return gestorIncidencia.altaIncidencia(id_request, id_user, id_area, descripcion, esta_resuelta);
	}
	
	public List<Area> buscaEspacios() throws ExcepcionRemota,
			ExcepcionGestorIncidencias {
		GestorArea gestorArea = new GestorArea();
		return gestorArea.buscaEspacios();
	}

	public List<Usuario> buscaUsuarios() throws ExcepcionRemota,
			ExcepcionGestorIncidencias {
		GestorUsuario gestorUsuario = new GestorUsuario();
		return gestorUsuario.buscaUsuarios();
	}

	public Incidencia buscaIncidenciaPorId(Integer request_id)
			throws ExcepcionRemota, ExcepcionGestorIncidencias {
		GestorIncidencia gestorIncidencia = new GestorIncidencia();
		return gestorIncidencia.buscaIncidenciaPorId(request_id);
	}

	public boolean agregarApunte(Integer id_request, Integer user_id, String description) throws ExcepcionRemota, ExcepcionGestorIncidencias{
		GestorComentarioIncidencia gestorComentarioIncidencia = new GestorComentarioIncidencia();
		return gestorComentarioIncidencia.agregarApunte(id_request, user_id, description);
	}
	
	public List<ComentarioIncidencia> comentariosIncidencia(Integer request_id) throws ExcepcionRemota, ExcepcionGestorIncidencias{
		GestorComentarioIncidencia gestorComentarioIncidencia = new GestorComentarioIncidencia();
		return gestorComentarioIncidencia.comentariosIncidencia();
	}
	
	public List<Incidencia> buscaIncidenciasEnCurso() throws ExcepcionRemota, ExcepcionGestorIncidencias{
		GestorIncidencia gestorIncidencia = new GestorIncidencia();
		return gestorIncidencia.buscaIncidenciasEnCurso();
	}
	
	public List<Incidencia> buscaIncidenciasResueltas() throws ExcepcionRemota, ExcepcionGestorIncidencias{
		GestorIncidencia gestorIncidencia = new GestorIncidencia();
		return gestorIncidencia.buscaIncidenciasResueltas();
	}
	

}
